package IO;

import java.io.*;

/***
 * 特点：
 *      ①字符缓冲流（高效字符流）    自带有缓冲区，大小为8192个字符，也就是16KB。
 *      (即字节数：16*1024 == 8192*2) （Unicode一个中或英文字符都是  占两个字节）
 ②需注意，高效字符输入流与之前有差异的地方在于，
 *   在创建高效字符输入流对象时，并不是直接传入数据源文件的路径了，而是要传入一个
 *   普通的字符输入流对象，而我们知道，普通读文件对象在创建时传入的就是数据源文件
 *   的路径了，因此，可以概括为：创建高效字符输入流对象需要传入一个‘已经关联数据
 *   源文件的普通字符输入流对象’。
*/

public class OrdinaryUse {
    public static void main(String[] args) throws IOException {
        //1.创建（高效）字符输入流对象，关联数据源文件（此处直接采用链式编程）
        BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\code\\高效输入流数据源文件.txt\\"));
        //2.创建（高效）字符输出流对象，关联目的地文件
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("D:\\code\\高效输出流目的地文件.txt\\"));

        //3.定义变量，记录读取到的内容
        int len;
        //4.循环读取，只要条件满足就一直读取，并将读取到的内容赋值给变量
        while((len = bufferedReader.read()) != -1)
        {
            bufferedWriter.write(len);  //以单个字符形式写入
        }
        //6.释放资源
        bufferedReader.close();
        bufferedWriter.close();
    }
}
/*
     Notice:
     这里的while循环,表面上看着就像六部曲的一次读写一个字符，但底层实际是按字符数组读取的。
 */